home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / QuickDraw GX / Programming Stuff / Sample Code / Printing Samples / Applications… / Exp. #9 (Inside Mac code) ƒ / Experiment no.9.h < prev    next >
Encoding:
Text File  |  1996-06-14  |  9.6 KB  |  236 lines  |  [TEXT/MPS ]

  1. // Experiment no.9.h
  2. //
  3. //  4/26/93 - dmh - Thrown on the grill.
  4. //  9/10/93 - dmh - Updated for b2.
  5. //            - Neutralized some nasty bugs.
  6. // 12/18/93 - dmh - Updated for b3.
  7. //  3/22/94 - dmh - Updated for b4.
  8. //    3/24/94 - dmh - general cleanup and debugging.
  9. //    7/13/94 - dmh - Enabled printer resolution code.
  10. //    8/24/94 - dmh - Universalized.
  11. //    6/14/96 - cn  - Updated to support Universal Interfaces 2.1.
  12. //
  13.  
  14. #include <StdIO.h>
  15. #include <OSEvents.h>
  16. #include <AppleEvents.h>
  17. #include <Types.h>
  18. #include <Errors.h>
  19. #include <QuickDraw.h>
  20. #include <Fonts.h>
  21. #include <Menus.h>
  22. #include <Dialogs.h>
  23. #include <DiskInit.h>
  24. #include <Desk.h>
  25. #include <Memory.h>
  26. #include <Scrap.h>
  27. #include <Files.h>
  28. #include <StandardFile.h>
  29. #include <Resources.h>
  30.  
  31. #include <Collections.h>
  32. #include <GXPrinterDrivers.h>
  33. #include <GXPrinting.h>
  34. #include <GXEnvironment.h>
  35. #include <GXGraphics.h>
  36. #include <FontLibrary.h>
  37. #include <GraphicsLibraries.h>
  38. #include <GXMath.h>
  39.  
  40. #define kCreator                'Ex#9'        /* Our registered application creator.                    */
  41. #define kMyDocCreator            kCreator
  42. #define kMyDocType                'Doçç'
  43.  
  44. #define kPrintFileType1            'tjob'        /* types of print files that we look at.                */
  45. #define kPrintFileType2            'sjob'
  46. #define kPrintFileType3            'rjob'
  47. #define kPrintFileType4            'qjob'
  48.  
  49. #define kMyJobType                'TJOB'        /* The type of our job resource.                        */
  50. #define    kMyJobID                128            /* The ID of our job resource.                            */
  51.  
  52. #define kMyFormatInfoType        kCreator    /* Type & ID of our format index collection item.    */
  53. #define kMyFormatInfoTagID        gxPrintingTagID
  54. #define kMyKindaCollectionType    kCreator    /* Type & ID of our panel settings collection item.    */
  55. #define kMyKindaCollectionTagID    gxPrintingTagID +1
  56.  
  57. #define r_aboutDlog                321            /* Our "About…" dialog's resource ID.                    */
  58. #define r_msgDlog                123            /* Our message dialog's resource ID.                    */
  59. #define d_msgItem                  2            /* The dialog's static text item.                        */
  60.  
  61. #define n_dlogLevel                .25            /* Level to display our dialogs at as a                    */
  62.                                             /* percentage of the way down the                        */
  63.                                             /* screen.  (See PositionWindow.)                        */
  64.  
  65.  
  66. #define r_MyFormatPanelResID    6000        /* ID of our panel and panel icon resources.            */
  67.  
  68. #define r_printerInfoDlog        140            /* ID of our printer info dialog.                        */
  69. #define kOKButton                1            /* Our dialog's OK button item.                            */
  70.  
  71. // MyDocumentRec - For each document we have a document job, file specification, name,
  72. // viewPort and a collection of pages and page formats.  Note that the MyDocumentRec
  73. // data type in this example is simplified to handle a maximum of 20 pages.
  74.  
  75. #define kMaxPages    20
  76.  
  77. typedef struct MyDocumentRec {
  78.         gxJob            documentJob;                // Job bound to this document.
  79.         long            numPages;                    // Number of pages in this document.
  80.         long            curPage;                    // The current page that we're looking at.
  81.         FSSpec            documentFSSpec;                // The file specification for this document.
  82.         Str31            documentTitle;                // The title of this document (such
  83.                                                     // as "Untitled").
  84.         WindowPtr        documentWindow;                // The window for this document.
  85.         gxViewPort        documentViewPort;            // The viewPort used for drawing within
  86.                                                     // this document window.
  87.         gxShape            documentPage[kMaxPages];    // The shape data for each page.
  88.         gxFormat        pageFormat[kMaxPages];        // format for each page.  If nil, we use
  89.                                                     // the job format.  This information is not
  90.                                                     // used until the Optional and Advanced
  91.                                                     // Printing Features chapters.
  92. } MyDocumentRec, *MyDocumentPtr;
  93.  
  94.  
  95. typedef struct MyKindaCollectionRec {
  96.         unsigned char    isTurnedOn;                    // Is our panel item turned on?        
  97.         char            fillByte;                    // C adds this if we don't (for alignment).
  98.         short            dayOfWeek;                    // Pop-up menu setting.
  99. } MyKindaCollectionRec, *MyKindaCollectionPtr, **MyKindaCollectionHdl;
  100.  
  101.  
  102. // Useful macros:
  103.  
  104. #define MIN(x,y)    ((x < y)? x:y)
  105. #define MAX(x,y)    ((x > y)? x:y)
  106. #define ABS(x)        ((x <= 0)? x:-x)
  107.  
  108.  
  109. // Other defines:
  110.  
  111. #define r_menuBar            128
  112.  
  113. #define mApple                128
  114. #define kAbout                    1
  115.  
  116. #define mFile                129
  117. #define kNew                    1
  118. #define kOpen                    2
  119. #define kClose                    4
  120. #define kSave                    5
  121. #define kSaveAs                    6
  122. #define kInsertPage                8
  123. #define kDeletePage                9
  124. #define kDocSetup                11
  125. #define kPageSetup                12
  126. #define kPrint                    13
  127. #define kPrintOne                14
  128. #define kQuit                    16
  129.  
  130. #define mEdit                130
  131. #define kUndo                    1
  132. #define kCut                    3
  133. #define kCopy                    4
  134. #define kPaste                    5
  135. #define kClear                    6
  136.  
  137. #define mTest                131
  138. #define kAheadPage                1
  139. #define kBackPage                2
  140. #define kApplyAboveFormat        3
  141. #define kAddForm                4
  142. #define kRemoveForm                5
  143. #define kGetCopiesInfo            6
  144. #define kGetFileNumPages        7
  145. #define kShowJobPrinterInfo        8
  146. #define kJobRefConTest            9
  147. #define kReadFilePage           10
  148. #define kGetPaperTypeName       11
  149. #define kGetPaperDimensions       12
  150. #define kGetAllPaperTypeInfo   13
  151. #define kShowPrinterResolution 15
  152.  
  153. // Prototypes:
  154.  
  155. OSErr MyInitializeApp(void);
  156. void  MyAEInstallation(void);
  157. OSErr MyCheckAEParams(AppleEvent *theAppleEvent);
  158. void  MyAdjustMenusForPrintDialogs(Boolean dialogGoingUp);
  159. void  MyAdjustMenus(void);
  160. void  MyWindowUpdate(WindowPtr whichWindow);
  161. OSErr MyDoEvent(EventRecord *event);
  162. void  MyDoMenuCommand(long menuResult);
  163. OSErr MyFormatDialog(MyDocumentPtr myDocument);
  164. OSErr MyPrintDialog(MyDocumentPtr myDocument);
  165. OSErr MyPrintDocument(MyDocumentPtr myDocument);
  166. OSErr MyPrintingEventOverride(EventRecord *anEvent, Boolean filterEvent);
  167. OSErr MyNewDocument(Str32 docName, MyDocumentPtr myDocument);
  168. OSErr MyCloseDocument(MyDocumentPtr myDocument);
  169. OSErr MyPageFormatDialog(MyDocumentPtr myDocument);
  170. OSErr MyInsertPage(MyDocumentPtr myDocument);
  171. OSErr MyPrintDocument1(MyDocumentPtr myDocument);
  172. OSErr MyPrintDocument2(MyDocumentPtr myDocument);
  173. OSErr MyPrintDocument3(MyDocumentPtr myDocument);
  174. OSErr MyPrintDocument4(MyDocumentPtr myDocument);
  175. OSErr MyPrintOneCopy(MyDocumentPtr whichDocument);
  176. OSErr MyReplaceCollectionItem(void *newData, long collectSize,
  177.                               OSType collectType, long collectID,
  178.                               Collection whichCollection,
  179.                               Ptr *oldData, long *oldDataSize);
  180. void  MyBackPage(WindowPtr whichWindow);
  181. void  MyAheadPage(WindowPtr whichWindow);
  182. OSErr MySaveDocument(MyDocumentPtr myDocument, Boolean doingSaveAs);
  183. OSErr MySaveDocument2(MyDocumentPtr myDocument, Boolean doingSaveAs);
  184. OSErr MySaveJobInDataFork(MyDocumentPtr myDocument, short dataRefNum);
  185. OSErr MyFlattenJobProc(long dataSize, void *data, void *dataRefNum);
  186. OSErr MyLoadJobFromDataFork(MyDocumentPtr myDocument, short dataRefNum);
  187. OSErr MyUnflattenJobProc(long dataSize, void *data, void *dataRefNum);
  188. OSErr MyFSOpenDocument(MyDocumentPtr myDocument, FSSpec *docFSSpec);
  189. OSErr MyOpenDocument(MyDocumentPtr myDocument);
  190. OSErr MyOpenDocument2(MyDocumentPtr myDocument);
  191. OSErr MyPrintRecordToJob(MyDocumentPtr myDocument, THPrint hPrint);
  192. OSErr MyApplyPageFormat(MyDocumentPtr myDocument, gxFormat aNewFormat);
  193. OSErr MyDeletePage(MyDocumentPtr myDocument);
  194. OSErr MyAdjustFormats(MyDocumentPtr myDocument);
  195. OSErr MySaveFormatRefs(MyDocumentPtr myDocument);
  196. OSErr MyMoveFormatToJob(long oldPage, MyDocumentPtr oldDocument, long newPage, MyDocumentPtr newDocument);
  197. OSErr MyAddFormatForm(MyDocumentPtr myDocument);
  198. OSErr MyRemoveFormatForm(MyDocumentPtr myDocument);
  199. OSErr MyFormatDialogOverride(gxFormat aFormat, StringPtr title, gxDialogResult *result);
  200. OSErr MySetUpByPagePanel(gxFormat aFormat, short ourResFile);
  201. OSErr MyGetJobCopies(MyDocumentPtr myDocument, short *numCopies);
  202. OSErr MyGetPrintFilePages(FSSpec *printFSSpec, long *numCopies);
  203. OSErr MyShowJobPrinterInfo(MyDocumentPtr myDocument);
  204. OSErr MyCopyJobToDoc(MyDocumentPtr srcDocument, MyDocumentPtr destDocument);
  205. OSErr MyJobRefConTest(MyDocumentPtr myDocument);
  206. OSErr MyReadPrintFilePage(MyDocumentPtr    myDocument, FSSpec *printFSSpec,
  207.                           long whichPg, gxFormat *pgFormat, gxShape *pgShape);
  208. OSErr MyCreatePaperType(MyDocumentPtr myDocument, Str31 paperName, gxRectangle *pageSize,
  209.                         gxRectangle *paperSize, gxPaperType *newPaperType);
  210. OSErr MyGetPaperTypeName(MyDocumentPtr myDocument, Str255 paperTypeName);
  211. OSErr MyCheckAllFormatMappings(MyDocumentPtr myDocument);
  212. OSErr MyGetFormatMapping(MyDocumentPtr myDocument, long whichPage,
  213.                          gxMapping *theMapping);
  214. OSErr MyGetPaperTypeDims(MyDocumentPtr myDocument,
  215.                          gxRectangle *pageBounds, gxRectangle *paperBounds);
  216. OSErr MyListAllPaperTypes(MyDocumentPtr myDocument);
  217. OSErr MyCreateFormatIndexList(MyDocumentPtr myDocument, Handle *theFormatIdxList);
  218. void  MyDisplayAbout(void);
  219. void  MyDisplayInfo(Str255 msg);
  220. void  MyPositionWindow(WindowPtr windPtr, Boolean showIt, float vertPercent);
  221. void MyShowJobPrinterResolution(MyDocumentPtr myDocument);
  222. void  MyGetFormatDeviceResolution(gxJob whichJob, Fixed *hRes, Fixed *vRes);
  223. void  MyGetOutputDeviceResolution(gxJob whichJob, Fixed *hRes, Fixed *vRes);
  224. gxColorProfile MyGetFormattingPrinterProfile(MyDocumentPtr myDocument, gxColorSpace *theSpace);
  225. Boolean MyMakePrinterColor(MyDocumentPtr myDocument, gxColor *sourceColor, gxColor *printedColor);
  226. gxParsePageRangeResult MyPageRangeValidityCheck(StringPtr fromString, StringPtr toString);
  227. OSErr MyParsePageRangeOverride(StringPtr fromString, StringPtr toString, gxParsePageRangeResult *result);
  228. OSErr MyConfigurePageRange1(MyDocumentPtr myDocument);
  229. OSErr MyConfigurePageRange2(MyDocumentPtr myDocument);
  230. OSErr MyConfigurePageRange3(MyDocumentPtr myDocument);
  231. pascal OSErr MyHandleOAPP(AppleEvent *theAppleEvent, AppleEvent *reply, long myRefCon);
  232. pascal OSErr MyHandleQUIT(AppleEvent *theAppleEvent, AppleEvent *reply, long myRefCon);
  233. pascal OSErr MyHandleODOC(AppleEvent *theAppleEvent, AppleEvent *reply, long myRefCon);
  234. pascal OSErr MyHandlePDOC(AppleEvent *theAppleEvent, AppleEvent *reply, long myRefCon);
  235. pascal gxLoopStatus MyCheckMappingProc(gxFormat aFormat, void *theMapping);
  236. pascal gxLoopStatus MyPTInfoProc(gxPaperType thePaperType, void *refCon);